[XEN][POWERPC] Xen shadow ops, mostly skeleton code
authorJimi Xenidis <jimix@watson.ibm.com>
Sun, 20 Aug 2006 17:28:45 +0000 (13:28 -0400)
committerJimi Xenidis <jimix@watson.ibm.com>
Sun, 20 Aug 2006 17:28:45 +0000 (13:28 -0400)
Signed-off-by: Jimi Xenidis <jimix@watson.ibm.com>
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
xen/arch/powerpc/Makefile
xen/arch/powerpc/dom0_ops.c
xen/include/asm-powerpc/shadow.h

index c16cd1977f27b5d869dde0033e404f23ea556034..b17730832b8c09da422a5b26ecfe8d2b3830f3de 100644 (file)
@@ -32,6 +32,7 @@ obj-y += ofd_fixup.o
 obj-y += physdev.o
 obj-y += rtas.o
 obj-y += setup.o
+obj-y += shadow.o
 obj-y += smp.o
 obj-y += time.o
 obj-y += usercopy.o
index ff4813d92c2300757bc673f8957833e1419a47e6..9aa9118abfeceb7679d4633b4de84b5652f63fee 100644 (file)
@@ -23,6 +23,7 @@
 #include <xen/lib.h>
 #include <xen/sched.h>
 #include <xen/guest_access.h>
+#include <xen/shadow.h>
 #include <public/xen.h>
 #include <public/domctl.h>
 #include <public/sysctl.h>
@@ -107,8 +108,22 @@ long arch_do_sysctl(struct xen_sysctl *sysctl,
             ret = -EFAULT;
     }
     break;
+    case DOM0_SHADOW_CONTROL:
+    {
+        struct domain *d;
+        ret = -ESRCH;
+        d = find_domain_by_id(op->u.shadow_control.domain);
+        if ( d != NULL )
+        {
+            ret = shadow_control_op(d, &op->u.shadow_control, u_dom0_op);
+            put_domain(d);
+            copy_to_guest(u_dom0_op, op, 1);
+        } 
+    }
+    break;
 
     default:
+        printk("%s: unsupported op: 0x%x\n", __func__, (op->cmd));
         ret = -ENOSYS;
         break;
     }
index d5eb849302952119c6ffb52b79d9816a787ffd3b..11c349c1d5228a9035c0631c565606857b4c82f2 100644 (file)
@@ -56,4 +56,8 @@ static inline void mark_dirty(struct domain *d, unsigned int mfn)
     return;
 }
 #define gnttab_mark_dirty(d, f) mark_dirty((d), (f))
+
+extern int shadow_control_op(struct domain *d, 
+                             dom0_shadow_control_t *sc,
+                             XEN_GUEST_HANDLE(dom0_op_t) u_dom0_op);
 #endif